package controllers;

import java.util.List;
import models.Contacto;
import models.Evento;
import models.Noticia;
import models.Persona;
import play.mvc.Controller;

/**
 *
 * @author Luis A. Ramirez Martinez
 */
public class Services extends Controller{
    
    public static void getAgenda(){
        List<Evento> lstEventos = Evento.findAll();
        renderJSON(lstEventos);
    }
    
    public static void getNoticias(){
        List<Noticia> lstNoticias = Noticia.find("order by id desc").fetch(15);
        renderJSON(lstNoticias);
    }
    
    public static void getPersona(String id){
       Persona persona = Persona.find("idFacebook = ? ", id).first();
        renderJSON(persona);
    }
    
    public static void getContactos(Long id){
        List<Contacto> contactos = Contacto.find("idPersonaPadre.idFacebook = ?", ""+id).fetch();
        for (Contacto contacto : contactos) {
           if(!contacto.estatus){
               contactos.remove(contacto);
           }
        }
        renderJSON(contactos);
    }
   
    public static void addPersona(){
        String idFacebook = params.get("idFacebook", String.class);
        String nombre = params.get("nombre", String.class);
        String apellido = params.get("apellido", String.class);
        String genero = params.get("genero", String.class);
        String rangoEdad = params.get("rangoEdad", String.class);
        String aPolitica = params.get("aPolitica", String.class);
        String correo = params.get("correo", String.class);
        String fotoURL = params.get("fotoURL", String.class);
        
        Persona persona;
        
        persona = Persona.find("idFacebook = ?", idFacebook).first();
        if(persona == null){
            persona = new Persona(idFacebook, nombre, apellido, genero, rangoEdad, aPolitica, correo,fotoURL);
            persona.save();
        }
        
        renderJSON(persona);
    
    }
    public static void addContacto(){
        Double lat;
        Double lon;
        
        Long idPersona = params.get("idPersona", Long.class);
        Double latitud = params.get("latitud", Double.class);//44.33467
        Double longitud = params.get("longitud", Double.class);//55.33689
        Integer token = params.get("token", Integer.class);
        Boolean esPadre = params.get("esPadre", Boolean.class);
        
        lat = latitud;
        lon = longitud;
        
        latitud = Double.parseDouble(String.format("%.3g%n", latitud));
        longitud = Double.parseDouble(String.format("%.3g%n", longitud));
        
        Persona p = Persona.find("idFacebook = ?", ""+idPersona).first();
        Contacto contacto = Contacto.find(" latitud = ? AND longitud = ? ", latitud, longitud).first();
        
    
         
        if(esPadre && contacto != null){   
                contacto.idPersonaPadre = p;
                contacto.latitud= latitud;
                contacto.longitud = longitud;
                
        }else if(!esPadre && contacto != null){
            contacto.idPersonaHijo = p;
           
        
        }else{
            if(esPadre){
                contacto = new Contacto(p, null, latitud, longitud, token, false);
            }else{
                contacto = new Contacto(null, p, latitud, longitud,  token, false);
            }
        }

            if(contacto.idPersonaHijo != null && contacto.idPersonaPadre != null){
                contacto.estatus = Boolean.TRUE;
                contacto.latitud = lat;
                contacto.longitud = lon;
            }
            contacto.save();

    }
    
}
